Collections এর ওপর অপারেশন (map, fold, reduce)

Computer Programming - এফ শার্প প্রোগ্রামিং (F# Programming) - Collections in F# (কালেকশনস)
208

Collections এর ওপর অপারেশন (map, fold, reduce)

F# তে Collections বিভিন্ন ধরনের ডেটা সংগ্রহ করতে ব্যবহৃত হয়, যেমন List, Array, Set, Map ইত্যাদি। F# এর map, fold, এবং reduce অপারেশনগুলি সাধারণত functional programming প্যাটার্নে ব্যবহৃত হয়, যা ডেটা প্রসেসিংকে সহজ এবং কার্যকরী করে তোলে।

এই অপারেশনগুলো বিভিন্ন ধরনের collections এর উপর কার্যকরীভাবে প্রয়োগ করা যায় এবং ডেটাকে একাধিকভাবে ট্রান্সফর্ম, একত্রিত বা সংক্ষেপিত (summarized) করতে সাহায্য করে।


১. map

map ফাংশন একটি transformational operation যা একটি ফাংশন প্রয়োগ করে একটি collection এর প্রতিটি উপাদানকে নতুন মানে রূপান্তরিত করে। এটি মূল সংগ্রহের মধ্যে কোনো পরিবর্তন না এনে নতুন একটি সংগ্রহ তৈরি করে।

Syntax:

let newCollection = List.map (fun x -> transformFunction x) collection

এখানে:

  • transformFunction একটি ফাংশন যা প্রতিটি উপাদানে প্রয়োগ করা হবে।
  • collection হচ্ছে প্রাথমিক সংগ্রহ, যেমন একটি List, Array, অথবা অন্য কোনো ধরনের সংগ্রহ।

উদাহরণ:

// Create a list
let numbers = [1; 2; 3; 4; 5]

// Double each number in the list using map
let doubledNumbers = List.map (fun x -> x * 2) numbers
printfn "Doubled Numbers: %A" doubledNumbers

এখানে:

  • List.map ফাংশনটি প্রতিটি উপাদানে গুণ (multiplication) ফাংশন প্রয়োগ করে এবং নতুন একটি List তৈরি করে।
  • আউটপুট হবে [2; 4; 6; 8; 10]

map অপারেশনকে Array, Set এবং Map ইত্যাদি সংগ্রহেও ব্যবহার করা যায়।


২. fold

fold (বা foldBack) একটি reducing operation যা একটি সংগ্রহের প্রতিটি উপাদানকে একত্রিত করে একটি একক ফলাফলে পরিণত করে। এটি দুটি আর্গুমেন্ট নেয়:

  1. একটি ফাংশন যা দুটি মান নেবে এবং একটি নতুন মান তৈরি করবে।
  2. একটি যাত্রা (initial value) যা ফলাফলের শুরু হবে।

fold সাধারণত বাম থেকে ডানে (left-to-right) কাজ করে, এবং foldBack ডান থেকে বামে (right-to-left) কাজ করে।

Syntax:

let result = List.fold (fun acc x -> combineFunction acc x) initialValue collection

এখানে:

  • combineFunction একটি ফাংশন যা পূর্ববর্তী অ্যাকুমুলেটর মান এবং বর্তমান উপাদানটি নিয়ে একটি নতুন মান তৈরি করবে।
  • initialValue হচ্ছে শুরু মান, যা প্রথমে অ্যাকুমুলেটর হিসেবে ব্যবহার করা হবে।

উদাহরণ:

// Create a list
let numbers = [1; 2; 3; 4; 5]

// Calculate the sum of the numbers using fold
let sum = List.fold (fun acc x -> acc + x) 0 numbers
printfn "Sum: %d" sum

এখানে:

  • List.fold ফাংশনটি প্রতিটি উপাদানকে একত্রিত করে তাদের যোগফল নির্ণয় করেছে।
  • 0 হল অ্যাকুমুলেটরের প্রাথমিক মান, এবং প্রতিটি উপাদান তার সাথে যোগ করা হয়েছে।
  • আউটপুট হবে 15

fold এবং foldBack এর মধ্যে পার্থক্য হলো:

  • fold বাম থেকে ডানে অপারেশন সম্পাদন করে।
  • foldBack ডান থেকে বামে অপারেশন সম্পাদন করে।

foldBack উদাহরণ:

let reversedSum = List.foldBack (fun x acc -> acc + x) numbers 0
printfn "Reversed Sum: %d" reversedSum

এখানে, ফলাফল একই হবে কারণ এটি সংখ্যাগুলির যোগফল বের করে, তবে এটি ডান থেকে বামে (reverse order) একত্রিত করবে।


৩. reduce

reduce ফাংশনটি fold এর মতোই একটি reducing operation, তবে এটি initial value প্রয়োজন হয় না এবং এটি first element থেকে শুরু হয়। এটি একটি সংগ্রহের মধ্যে একক মান তৈরি করার জন্য ব্যবহার করা হয়।

Syntax:

let result = List.reduce (fun acc x -> combineFunction acc x) collection

এখানে:

  • combineFunction একটি ফাংশন যা অ্যাকুমুলেটর (acc) এবং বর্তমান উপাদান (x) নিয়ে একটি নতুন মান তৈরি করবে।
  • collection হলো আপনার ইনপুট সংগ্রহ, এবং এটি প্রথম উপাদানকে অ্যাকুমুলেটর হিসেবে ব্যবহার করবে।

উদাহরণ:

// Create a list
let numbers = [1; 2; 3; 4; 5]

// Calculate the product of the numbers using reduce
let product = List.reduce (fun acc x -> acc * x) numbers
printfn "Product: %d" product

এখানে:

  • List.reduce ফাংশনটি প্রতিটি উপাদানকে একত্রিত করে তাদের গুণফল নির্ণয় করেছে।
  • আউটপুট হবে 120 (1 * 2 * 3 * 4 * 5 = 120)।

reduce এবং fold এর মধ্যে পার্থক্য হলো:

  • reduce একটি initial value প্রয়োজন হয় না।
  • fold একটি initial value গ্রহণ করে, যা শুরুতে অ্যাকুমুলেটরের মান হিসেবে ব্যবহার করা হয়।

Comparing map, fold, and reduce

OperationDescriptionExample Use CaseInitial Value Required
mapTransforms each element in a collection using a function.Doubling each number in a list.No
foldReduces a collection to a single value by applying a function over the elements.Summing numbers in a list.Yes
reduceSimilar to fold but doesn’t require an initial value.Calculating the product of numbers in a list.No

উপসংহার

F# এ Collections এর উপর map, fold, এবং reduce অপারেশনগুলি খুবই শক্তিশালী এবং কার্যকরী ডেটা প্রসেসিং টুলস।

  • map ব্যবহার করে আপনি কোনো ফাংশন দিয়ে প্রতিটি উপাদান পরিবর্তন করতে পারেন।
  • fold এবং reduce ব্যবহার করে আপনি একটি সংগ্রহের উপাদানগুলি একত্রিত করতে পারেন, তবে fold এ শুরু মান প্রয়োজন এবং reduce এ শুরু মান থাকে না।
    এগুলি functional programming এ খুবই গুরুত্বপূর্ণ এবং কোড লেখাকে আরো পরিষ্কার, সংক্ষিপ্ত ও কার্যকরী করে তোলে।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...